package com.etocrm.saas.lib.base.common.result;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 返回结果状态码及说明 枚举.
 */
@Getter
@AllArgsConstructor
public enum ResultCodeEnum implements IResultCode {

    /**
     * 分段规划
     * 0: 成功
     * <0: 服务错误
     * >0: 客户端错误
     * 0 - 10000 通用错误
     * 1W起每个万位代表一个业务模块的错误, 支持9999种错误. 根据自己的业务逻辑进行定义
     * 例 : 10000 = 用户权限模块
     *      20000 = 商品模块
     *      30000 = 活动模块
     *      40000 = 积分模块
     *      50000 = 文件模块
     */

    /**
     * 成功
     */
    SUCCESS(0, "成功"),
    SYSTEM_ERROR(-1, "系统错误"),
    INNER_SERVICE_ERROR(-2, "内部服务错误"),

    RATE_LIMIT_WARN(-100, "您的访问过于频繁，请稍后重试"),

    FEIGN_DECODE_ERROR(-400, "不支持的Feign Decode类型"),
    FEIGN_CALL_ERROR(-500, "Feign 远程调用失败"),
    FEIGN_BUSINESS_WARN(-500, "Feign 远程调用 逻辑异常"),

    PARAM_NOT_VALID_WARN(4000, "请求参数无效"),
    METHOD_NOT_VALID_WARN(4001, "请求方法无效"),
    PARAM_VALID_ERROR(4002, "参数校验异常"),
    PATH_NOT_FOUND_WARN(4042, "请求路径不存在"),

    RESOURCE_NOT_FOUND_WARN(4040, "请求资源不存在"),


    USER_NOT_EXIST_WARN(10001, "获取不到用户信息"),
    ACCOUNT_TYPE_NOT_EXIST_WARN(10002, "对应的账户不存在"),
    USER_NOT_LOGIN_WARN(10003, "用户未登录"),
    USER_NO_PERMISSION_WARN(10004, "没有权限操作"),
    USER_INVALID_PARAM(10005,"非法参数！"),
    UNSUPPORTED_GRANT_TYPE(10006,"不支持认证方式！"),
    USER_TOKEN_TIMEOUT(10007,"Authorization令牌已过期，请重新登录！"),
    USER_TOKEN_ERROR(10008,"Authorization令牌输入格式错误，请检查！"),
    USER_REQUEST_API_ERROR(10009,"接口异常，请联系管理员！"),

    //商品模块
    PRODUCT_NO_OUT_OF_BOUNDS(20001, "商品编号最多30个字符"),
    PRODUCT_NO_REPEAT(20002, "商品编号不可重复，请重新输入或尝试自动生成"),
    PRODUCT_REDUCE_COUNT_OUT_OF_BOUNDS(20003, "减发商品数不能大于商品剩余库存"),

    CRM_COUPON_ADD_COUNT_OUT_OF_AVAILABLE(20004, "增发CRM卷数量不能超过CRM卷可用库存"),
    PRODUCT_DETAIL_IMGS_OUT_OF_BOUNDS(20005, "商品详情图片最多上传15张"),

    PRODUCT_TEMPLATE_ATTR_NAME_NULLABLE(20006, "商品规格模板规格参数名不能为空"),
    PRODUCT_TEMPLATE_ATTR_NAME_OUT_OF_BOUNDS(20007, "商品规格模板规格参数名最多为5个字符"),

    PRODUCT_SKU_NO_REPEAT(20008, "商品sku编号已存在，请重新输入"),

    PRODUCT_MODEL_TEMPLATE_HAS_BINDING_SKU(20009, "该商品规格模板下已经关联商品"),

    PRODUCT_NO_NOT_NULL(20010, "自定义商品编号不能为空"),

    PRODUCT_VIRTUAL_ID_NOT_NULL(20011, "虚拟商品id不能为空"),

    PRODUCT_VIRTUAL_CRM_ADD_COUNT_OUT_OF_BOUNDS(20012, "CRM卷增发商品数量+当前商品总数不能超过CRM卷可用库存"),

    PRODUCT_STOCK_NOT_LITTLE_THAN_PRE_STOCK(20013, "商品剩余库存不能小于商品预占库存"),

    PRODUCT_CRM_STOCK_NOT_MORE_THAN_AVAILABLE(20014, "CRM卷库存不能超过优惠券可用库存"),

    MAILBOX_GROUP_MAIL_COUNT_OUT_OF_BOUNDS(20015, "一个邮箱组最多添加10个邮箱"),

    MAILBOX_MAIL_FORMAT_ERROR(20016, "邮箱格式不正确"),

    PRODUCT_STOCK_INFO_IS_NULL(20017, "商品库存信息缺失"),

    STOCK_STORE_UPDATE_ERROR(20018, "门店库存更新失败"),

    PRODUCT_SKU_NO_NOT_NULL(20019, "商品sku编号不能为空"),

    STOCK_MESSAGE_IS_NULL(20020, "库存信息不存在"),

    STOCK_UPDATE_ERROR(20021, "库存信息更新失败"),

    PRODUCT_ADD_ERROR(20022, "添加实物商品失败"),

    PRODUCT_SKU_NOT_NULL(20023, "商品sku不能为空"),

    STOCK_MAX_MUST_MORE_THAN_MIN(20024, "库存范围最大值必须大于最小值"),

    STOCK_STORE_LEAVE_NOT_MORE_THAN_TOTAL_AND_PRE(20025, "门店可用库存+门店预占库存不能大于门店总库存"),

    EXCHANGE_MEMBER_LEVEL_REPEAT(20026, "可兑等级重复"),


    //活动模块
    ACTIVITY_IS_RUNNING(30001, "当前有活动正在进行中"),

    NOT_STOP_ACTIVITY_CANNOT_START(30002, "非已停用状态的活动不可启用"),


    //积分模块
    ACCOUNT_TYPE_IS_NULL(40001, "账户类型(积分体系)id不能为空"),

    APPLY_BRAND_NOT_NULL(40002, "适用品牌必须选择"),

    //文件上传

    FILE_UPLOAD_NAME_NOT_NULL(50000, "文件名不能为空"),

    FILE_UPLOAD_BRANDID_NOT_NULL(50001, "品牌不能为空"),

    FILE_UPLOAD_NOT_NULL(50002, "文件不能为空"),

    FILE_UPLOAD_ORG_NOT_NULL(50003, "机构不能为空"),

    FILE_UPLOAD_REQUEST_TIMEOUT(50004, "上传超时，请稍后再试!"),

    FILE_TYPE_FAIL(50005, "导入文件格式必须为.csv .xlsx .xls"),

    FILE_CONTENT_FORMAT_ERROR(50006, "文件内容缺失或格式错误");


    /**
     * 类型码
     */
    private Integer code;
    /**
     * 信息
     */
    private String message;
}
